/*
 * Copyright (c) 2018 - 2028. www.vtuzx.com Inc. All Rights Reserved
 */
package com.vtuzx.kingdee.xqc_core.constant;

import com.vtuzx.core.constant.IVtuzxEnum;

/**
 * 单据类型
 */
public enum BillType implements IVtuzxEnum<BillType> {
    /** 采购收货 */
    CGSH("CGSH", "101", "采购收货单", 0),
    /** 车间入库 */
    CJRK("CJRK", "201", "车间入库单", 1),
    /** 其他收货单 */
    QTSH("QTSH", "301", "其他收货单", 0),
    /** 车间收货单 */
    CJSH("CJSH", "201", "车间收货单", 0),
    /** 采购入库 */
    CGRK("CGRK", "101", "采购入库单", 1),
    /** 生产领料 */
    SCLL("SCLL", "201", "生产领料", -1),
    /** 其他出库 */
    QTCK("QTCK", "301", "其他出库", -1),
    /** 销售出库 */
    XSCK("XSCK", "401", "销售出库", -1),
    /** 盘点方案 */
    PDFA("PDFA", "", "盘点方案", 0),
    /** 盘点作业 */
    PDZY("PDZY", "", "盘点作业", 0),
    /** 其他入库 */
    QTRK("QTRK", "301", "其他入库", 1),
    /** 盘盈单 */
    PYD("PYD", "", "盘盈单", 0),
    /** 盘亏单 */
    PKD("PKD", "", "盘亏单", 0),
    /** 盘点入库 */
    PDRK("PDRK", "", "盘点入库", 1),
    /** 盘点出库 */
    PDCK("PDCK", "", "盘点出库", -1),
    /** 调拨出库 */
    DBCK("DBCK", "", "调拨出库", -1),
    /** 调拨入库 */
    DBRK("DBRK", "", "调拨入库", 1),
    /** 调拨移库 */
    DBYK("DBYK", "", "调拨移库", 0),
    /** 采购合同 */
    CGHT("CGHT", "", "采购合同", 0),
    /** 采购订单 */
    CGDD("CGDD", "", "采购订单", 0),
    /** 调整订单 */
    TZDD("TZDD", "", "调整订单", 0),
    /** 同步库存 */
    TBKC("TBKC", "", "同步库存", 0),
    /** 调整出库 */
    TZCK("TZCK", "", "调整出库", -1),
    /** 调整入库 */
    TZRK("TZRK", "", "调整入库", 1),
    /** 入库结算 */
    RKJS("RKJS", "", "入库结算", 0),
    /** 托盘绑定 */
    TPBD("TPBD", "", "托盘绑定", 0),
    /** 生产任务 */
    SCRW("SCRW", "", "生产任务", 0),
    /** 用料清单 */
    YLQD("YLQD", "", "用料清单", 0),
    /** 生产补料 */
    SCBL("SCBL", "", "生产补料", -1),
    /** 生产退料 */
    SCTL("SCTL", "", "生产退料", 0),
    /** 追溯码 */
    ZSM("ZSM", "", "追溯码", 0),
    /** 托盘盘点 */
    TPPD("TPPD", "", "托盘盘点", 0),
    /** 反盐入库 */
    FYRK("FYRK", "", "反盐入库", 1),
    /** 采购退货 */
    CGTH("CGTH", "", "采购退货", -1),
    /** 生产入库 */
    SCRK("SCRK", "205", "生产入库", 1),
    /** 收款单 */
    SKD("SKD", "", "收款单", 1),
    /** 公司间结算单 */
    GSJS("GSJS", "", "公司间结算单", 1),
    /** 极客云出库 */
    JKYCK("JKYCK", "", "吉客云出库", 1),
    /** 付款单 */
    FKD("FKD", "", "付款单", 1),
    /** 订单同步 */
    DDTB("DDTB", "", "订单同步", 1),
    /** 付款单 */
    JKYXS("JKYXS", "", "吉客云销售", 1),
    /** 付款单 */
    JKYDB("JKYDB", "", "吉客云调拨", 1);
    /** 枚举值 */
    private final String _key;

    /** 二维码关键字 */
    private final String _barcodeKey;

    /** 名称 */
    private final String _label;

    /** 出入库标志位 */
    private final int _inventoryIO;

    /**
     * 初始化枚举值
     *
     * @param key 键值
     * @param barcodeKey 二维码关键字
     * @param label 名称
     * @param inventoryIO 出入库标志位
     */
    BillType(String key, String barcodeKey, String label, int inventoryIO) {
        this._key = key;
        this._barcodeKey = barcodeKey;
        this._label = label;
        this._inventoryIO = inventoryIO;
    }

    public static BillType getEnum(String key) {
        for (BillType ele : values()) {
            if(ele.toString().equals(key)) {
                return ele;
            }
        }
        return null;
    }

    /**
     * 重写toString
     *
     * @return 键值
     */
    public String toString() {
        return _key;
    }

    /**
     * 获取二维码关键字
     *
     * @return 二维码关键字
     */
    public String barcodeKey() {
        return _barcodeKey;
    }

    /**
     * 获取名称
     *
     * @return 名称
     */
    public String label() {
        return _label;
    }

    /**
     * 获取出入库标志位
     *
     * @return 出入库标志位
     */
    public int inventoryIO() {
        return _inventoryIO;
    }
}
